# encoding: UTF-8

'''
本文件中包含的是CTA模块的回测引擎，回测引擎的API和CTA引擎一致，
可以使用和实盘相同的代码进行回测。
'''

from datetime import datetime, timedelta
from collections import OrderedDict
import json
import pymongo

from base.ctaBase import *
from strategy.ctaSetting import *
from engine.ctaBacktesting import BacktestingEngine

#from ctaMoveAverage import MoveAverageStrategy
from ctaChasingTick import ChasingTickStrategy

if __name__ == '__main__':
    # 以下内容是一段回测脚本的演示，用户可以根据自己的需求修改
    # 建议使用ipython notebook或者spyder来做回测
    # 同样可以在命令模式下进行回测（一行一行输入运行）

    # 创建回测引擎
    engine = BacktestingEngine()

    # 设置引擎的回测模式为K线
    engine.setBacktestingMode(engine.TICK_MODE)

    # 设置滑点
    engine.setSlippage(1)     # 铁矿石2跳

    # 设置回测用的数据起始日期
    #engine.setStartDate('20160228')
    engine.setStartDate('20110306')

    # 载入历史数据到引擎中
    engine.loadHistoryData(TICK_DB_NAME, 'Rb0000')
    # 在引擎中创建策略对象
    engine.initStrategy(ChasingTickStrategy, {})


    # 启用止损
    #engine.enableLimitLose()
    # 启用止盈
    #engine.enableLimitProfit()
    # 开始跑回测
    engine.runBacktesting()

    # 显示回测结果
    # spyder或者ipython notebook中运行时，会弹出盈亏曲线图
    # 直接在cmd中回测则只会打印一些回测数值
    engine.showBacktestingResult()
